package com.sunyur.tailor.channel.service.inner.purchase.model;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

/**
 * @ClassName PurchaserItemsResVO
 * @Description 申请单行详情 返回VO
 * @Author yu.chen
 * @Date 2020/11/25 11:08
 * @Version 1.0
 **/
@Data
public class PurchaserApplyItemModel implements Serializable {

    private static final long serialVersionUID = 4515843810377844618L;

    /**
     * 购买说明附件 接口新增
     */
    private Object innerFile;

    /**
     * 申请行号
     */
    private String applyItemCode;

    /**
     * 请购行状态
     * （0 草稿，1 受理中，2待审批，3审批通过，
     * 4驳回，5关闭）
     */
    private Integer status;

    /**
     * 供应商code
     */
    private String supplierCode;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 协议code
     */
    private String protocolCode;

    /**
     * 协议名称
     */
    private String protocolName;

    /**
     * 协议行code
     */
    private String protocolItemCode;

    /**
     * 商城商品Id
     */
    private Long mallSkuId;

    /**
     * 商品名称
     */
    private String productName;

    /**
     * 物料code
     */
    private String materialCode;

    /**
     * 物料名称
     */
    private String materialName;

    /**
     * 规格
     */
    private String spec;

    /**
     *商品属性信息
     */
    private String skuGroup;

    /**
     * 单位code
     */
    private String unitCode;

    /**
     * 单位名称
     */
    private String unitName;

    /**
     * 采购数量
     */
    private BigDecimal count;

    /**
     * 品牌
     */
    private String brand;

    /**
     * 使用人组织外部编码
     */
    private String userOrgOutsideCode;

    /**
     * 使用人组织名称
     */
    private String userOrgName;

    /**
     * 使用人姓名
     */
    private String userName;

    /**
     * 使用人工号
     */
    private String userWorkNumber;

    /**
     * 使用人电话
     */
    private String userPhone;

    /**
     * 期望交货期
     */
    private Date expectDeliveryDate;

    /**
     * 采购说明
     */
    private String purchaseDirections;

    /**
     * 备注
     */
    private String remark;

    /**
     * 类型 0商城 1非目录化 2punchOut 3手工
     */
    private Integer itemType;

    /**
     * 价格（非目录化参考价，其他类型协议价）
     */
    private BigDecimal priceWithTax;

    /**
     * 附件
     */
    private ApiFileModel file;

    /**
     * 行收货单地址信息
     */
    private PurchaserOrderAddressModel receiveAddressInfo;

    /**
     * 供应商地点编码
     */
    private String supplierSiteCode;

    /**
     * 供应商地点
     */
    private String supplierSiteName;

    /**
     * 行税率
     */
    private BigDecimal taxPointDecimal;

    /**
     * 个性化租户配置
     */
    private Map<String,Object> personalConfig;

    /**
     * 关闭、线下处理等操作备注
     */
    private String operateRemark;

    /**
     * 财务数据
     */
    private FinanceInfoModel financeInfo;

    /**
     * 业务单元编码
     */
    private String businessUnitCode;

    /**
     * 业务单元名称
     */
    private String businessUnitName;

    /**
     * 物资属性编码
     */
    private String materielAttrCode;

    /**
     * 物资属性名称
     */
    private String materielAttrName;

    /**
     * 调旧物资标识：0，不是；1，调旧协议；2，调旧商品
     */
    private Integer businessType;

    /**
     * 库存组织名称
     */
    private String stockOrganizationName;

    /**
     * 库存组织编码
     */
    private String stockOrganizationCode;
    /**
     * 库存地点名称
     */
    private String stockSiteName;

    /**
     * 库存地点编码
     */
    private String stockSiteCode;

    /**
     * 最低价标识: 0:未开启，1:最低价 2:非最低价
     */
    private Integer lowestPriceIndicator;

    /**
     * 项目编码
     */
    private String projectCode;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 内部备注（to 采购员）
     */
    private String innerRemark;

    /**
     * 物料分类外部编码
     */
    private String materielCategoryCode;

    /**
     * 物料分类名称
     */
    private String materielCategoryName;

    /**
     * 税率编码
     */
    private String taxCode;

    /**
     * 成本中心外部编码
     */
    private String costCenterOutsideCode;

    @Data
    public class PurchaserOrderAddressModel implements Serializable {

        private static final long serialVersionUID = 4196935829728344554L;

        /**
         * 收货人姓名
         */
        private String receiveUserName;

        /**
         * 收货人电话
         */
        private String receiveUserPhone;

        /**
         * 地址简称
         */
        private String addressShortName;

        /**
         * 省
         */
        private String provinceCode;

        /**
         * 省
         */
        private String provinceName;

        /**
         * 市
         */
        private String cityCode;

        /**
         * 市
         */
        private String cityName;

        /**
         * 区
         */
        private String areaCode;

        /**
         * 区
         */
        private String areaName;

        /**
         * 街道
         */
        private String streetCode;

        /**
         * 街道
         */
        private String streetName;

        /**
         * 详细地址
         */
        private String addressInfo;

        /**
         * 类型： 0公司地址，1个人地址
         */
        private Integer addressType;

        /**
         * 邮政编码
         */
        private String postalCode;

        /**
         * 地址外部编码
         */
        private String addressOutsideCode;
    }

    @Data
    public class FinanceInfoModel implements Serializable {

        private static final long serialVersionUID = 4109872339718953257L;

        /**
         * 预算类型编码（一级）
         * <p>
         * 内部预算类型如下三种：
         * <p>
         * 部门预算：DEPARTMENT_BUDGET_TAG，
         * <p>
         * 项目预算：PROJECT_BUDGET_TAG，
         * <p>
         * 个人预算：PERSON_BUDGET_TAG
         * <p>
         * 外部预算类型由租户确定
         */
        private String budgetTypeCode;

        /**
         * 预算外部编码（二级）
         */
        private String budgetOutSideCode;

        /**
         * 预算名称（二级）
         */
        private String budgetName;

        /**
         * 预算明细外部编码（三级）
         */
        private String budgetOutSideDetailCode;

        /**
         * 预算科目编码
         */
        private String accountDetailCode;

        /**
         * 预算科目名称
         */
        private String accountDetailName;

        /**
         * 费用类型外部编码
         */
        private String costOutsideCode;

        /**
         * 费用类型外部名称
         */
        private String costOutsideName;

        /**
         * 成本中心外部编码
         */
        private String costCenterOutsideCode;

        /**
         * 成本中心名称
         */
        private String costCenterName;

        /**
         * 受益对象编码
         */
        private String stakeHolderCode;

        /**
         * 受益对象名称
         */
        private String stakeHolderName;

        /**
         * 流程数据外部编码（如：链家科目外部code）
         */
        private String processOutsideCode;

        /**
         * 流程数据名称（如：链家科目）
         */
        private String processName;

        /**
         * 核算科目外部编码
         */
        private String accountingSubjectOutsideCode;

        /**
         * 核算科目名称
         */
        private String accountingSubjectName;
    }

    @Data
    public class ApiFileModel implements Serializable {

        private static final long serialVersionUID = 2018703662691409192L;

        /**
         * 名称
         */
        private String fileName;

        /**
         * 大小
         */
        private String fileSize;

        /**
         * url
         */
        private String fileUrl;
    }
}
